﻿using System;
using System.Collections.Generic;
using System.Text;
using NGinnBPM.Lib.Interfaces;
using NGinnBPM.MessageBus;
using NGinnBPM.Lib.Schema;
using NGinnBPM.Services;

namespace NGinnBPM.Runtime
{
    /// <summary>
    /// Context information passed to each task
    /// </summary>
    public interface ITaskContext
    {
        /// <summary>
        /// Parent environment
        /// </summary>
        INGEnvironment Environment { get; }
        /// <summary>
        /// Process definition
        /// </summary>
        ProcessDefinition ParentProcess { get; }
        /// <summary>
        /// Endpoint for publishing nginn task-related messages
        /// </summary>
        IMessageBus MessageBus { get; }
        /// <summary>
        /// 
        /// </summary>
        IProcessPackageRepository PackageRepository { get; }
        IProcessScriptManager ScriptManager { get; }
        IMessageCorrelationIdResolver MessageCorrelationIdResolver { get; }
        /// <summary>
        /// Service locator (NGinn hosting container)
        /// </summary>
        IServiceResolver ServiceLocator { get; }

        
    }
}
